Zjisteni IP adres z programu

Otázka od: EFG Developer

29. 11. 2002 9:02

Zdravim, jak co nejjednoduseji zjistim VSECHNY IP adresy PC, kde bezi
muj program (samozdrejme krome 127.0.0.1)?
Jde mi o reseni pokud možno bez komponent tretich stran.

Jmeno PC zjistim pomoci GetComputerName. Ještě bych tedy potreboval
zjistit všechny IP (PC muze mit vice sitovek nebo vice IP na jednu
sitovku).

[ Ted me ale napada, ze funkce GetComputerName nemusi odpovodat jmenu PC
v siti (v DNS) ]


Domnivam se, ze to musí bzt prinejmensim nekde v registrech.

Dekuji
Petr Sikola

Odpovedá: Blazek Jaroslav

29. 11. 2002 8:58

Ahoj,

> developer@efg.cz 29.11.02 8:36 >>>
>Zdravim, jak co nejjednoduseji zjistim VSECHNY IP adresy PC, kde bezi
>muj program (samozdrejme krome 127.0.0.1)?
>Jde mi o reseni pokud možno bez komponent tretich stran.

http://tangentsoft.net/wskfaq/examples/ipaddr.html



S pozdravem

Bc. Jaroslav Blazek
Access-IT Ceska Lipa
mailto:jaroslav.blazek@access-it.cz
http://www.access-it.cz
ICQ# : 133673990
+420605/813644

Odpovedá: Vit Tichy

29. 11. 2002 9:21

Joha EFG,

E> Zdravim, jak co nejjednoduseji zjistim VSECHNY IP adresy PC

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure getLocalIPs(var listIP:TStringList);
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  hostEnt :PHostEnt;
  p :PaPInAddr;
  buffer :array[0..63] of Char;
  i, wsa :integer;
  wsaData :TWSAData;
begin
    listIP.clear();

    wsa := WSAStartup($101, wsaData);
    if(wsa = 0)then
        try
            GetHostName(buffer, SizeOf(buffer));

            hostEnt := GetHostByName(buffer);
            if(hostEnt <> nil)then
            begin
                i := 0;
                p := PaPInAddr(hostEnt^.h_addr_list);
                while(p^[I] <> nil)do
                begin
                    listIP.Add(inet_ntoa(p^[I]^));
                    inc(I);
                end;
           end;

        finally
            WSACleanup;
        end;
end;



--
 vt